package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 课程表 DO
 * 对应数据库表：course
 * 
 * CREATE TABLE `course` (
 *     `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '课程ID',
 *     `name` VARCHAR(128) NOT NULL COMMENT '课程名称',
 *     `code` VARCHAR(32) NOT NULL COMMENT '课程代码',
 *     `description` TEXT COMMENT '课程描述',
 *     `teacher_id` BIGINT UNSIGNED NOT NULL COMMENT '授课教师ID',
 *     `teacher_name` VARCHAR(64) COMMENT '教师姓名（冗余字段）',
 *     `credit` INT DEFAULT 0 COMMENT '学分',
 *     `hours` INT DEFAULT 0 COMMENT '学时',
 *     `semester` VARCHAR(32) COMMENT '学期：如2024春季',
 *     `classroom` VARCHAR(64) COMMENT '教室',
 *     `schedule` VARCHAR(128) COMMENT '上课时间：如周一3-4节',
 *     `max_students` INT DEFAULT 100 COMMENT '最大学生数',
 *     `current_students` INT DEFAULT 0 COMMENT '当前学生数',
 *     `category` VARCHAR(64) COMMENT '课程类别：必修/选修',
 *     `status` TINYINT DEFAULT 1 COMMENT '状态：1-正常，0-停课',
 *     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 *     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
 * );
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("course")
public class CourseDO {

    /**
     * 课程ID
     */
    private Long id;

    /**
     * 课程名称
     */
    private String name;

    /**
     * 课程代码
     */
    private String code;

    /**
     * 课程描述
     */
    private String description;

    /**
     * 授课教师ID
     */
    @TableField("teacher_id")
    private Long teacherId;

    /**
     * 教师姓名（冗余字段）
     */
    @TableField("teacher_name")
    private String teacherName;

    /**
     * 学分
     */
    private Integer credit;

    /**
     * 学时
     */
    private Integer hours;

    /**
     * 学期：如2024春季
     */
    private String semester;

    /**
     * 教室
     */
    private String classroom;

    /**
     * 上课时间：如周一3-4节
     */
    private String schedule;

    /**
     * 最大学生数
     */
    @TableField("max_students")
    private Integer maxStudents;

    /**
     * 当前学生数
     */
    @TableField("current_students")
    private Integer currentStudents;

    /**
     * 课程类别：必修/选修
     */
    private String category;

    /**
     * 状态：1-正常，0-停课
     */
    private Integer status;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
} 